package scg.utils.policies.granularity;

import org.gridgain.grid.GridFactory;

/**Esta clase se utiliza, durante el proceso de ejecución de la aplicación gridificada, para conocer
 * la granularidad con la que serán creados las tareas que luego serán distribuidas a los diferentes
 * nodos del grid.*/
public abstract class GranularityPolicy {
	
	/**indica el tamaño del grid*/
	protected int gridSize = GridFactory.getGrid().getAllNodes().size();
	
	/**indica el fanout del problema recursivo, es decir, en cuantos hijos o bifurcaciones se 
	 * divide cada nivel recursivo*/
	protected int fanout;
		
	/**@return cantidad de nodos presentes en el grid*/
	public int getGridSize() {
		return gridSize;
	}

	/**@param cantidad de nodos presentes en el grid*/
	public void setGridSize(int gridSize) {
		this.gridSize = gridSize;
	}

	/**@return hijos o bifurcaciones en las que se divide cada nivel recursivo del problema*/
	public int getFanout() {
		return fanout;
	}

	/**@param hijos o bifurcaciones en las que se divide cada nivel recursivo del problema*/
	public void setFanout(int fanout) {
		this.fanout = fanout;
	}
	

	/**@return comenzando desde la raiz del árbol que describe la descomposición de un problema recursivo,
	 * retona el nivel cuyas */
	public abstract int getRecursionLevel();

}
